热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python|如何处理脚本输入

本文探讨了如何利用Python处理来自不同来源的脚本输入,包括命令行参数、文件重定向和管道输出。
Python | 如何处理脚本输入

原文链接: https://www.geeksforgeeks.org/python-accepting-script-input/

Python 常被用来替代 shell 脚本,用于自动执行诸如文件操作、系统配置等常规系统任务。本文将介绍如何通过重定向、管道或直接从文件读取等方式接受脚本输入。

需求:使脚本能够以最简便的方式接收用户的输入。这应涵盖通过命令行管道输出到脚本、将文件重定向到脚本,或是直接在命令行上传递文件名或文件名列表。

Python 的内置模块 fileinput 为实现这一目标提供了简洁的方法。以下是一个简单的示例,展示了如何使用该模块:

示例代码 1:

import fileinput
with fileinput.input() as f_input:
for line in f_input:
print(line, end='')

上述脚本能够处理所有提及的输入方式。如果将此脚本保存并设为可执行,那么可以通过以下命令获得预期的输出:

示例代码 2:

# 将目录列表输出到标准输出
$ ls | ./filein.py
# 读取/etc/passwd 并输出到标准输出
$ ./filein.py /etc/passwd
# 从标准输入读取/etc/passwd 并输出到标准输出
$ ./filein.py

fileinput.input() 函数创建并返回一个 FileInput 类的实例。此类实例不仅包含一些便捷的方法,还可以作为上下文管理器使用。因此,如果希望编写一个脚本来同时打印多个文件的内容,并在输出中包含文件名和行号,可以参考以下代码:

示例代码 3:

import fileinput
with fileinput.input('/etc/passwd') as f:
for line in f:
print(f.filename(), f.lineno(), line, end='')

/etc/passwd 1
/etc/passwd 2
/etc/passwd 3
<其他输出已省略>

使用 fileinput 作为上下文管理器可以确保在使用完毕后正确关闭文件,并能利用其提供的便捷方法来增强输出信息,例如添加文件名和行号等详细信息。


推荐阅读
  • 本文介绍了Kettle资源库的基本概念、类型及其管理方法,同时探讨了Kettle的不同运行方式,包括图形界面、命令行以及API调用,并详细说明了日志记录的相关配置。 ... [详细]
  • 本文档详细介绍了在 Kubernetes 集群中部署 ETCD 数据库的过程,包括实验环境的准备、ETCD 证书的生成及配置、以及集群的启动与健康检查等关键步骤。 ... [详细]
  • 探索Squid反向代理中的远程代码执行漏洞
    本文深入探讨了在网站渗透测试过程中发现的Squid反向代理系统中存在的远程代码执行漏洞,旨在帮助网站管理者和开发者了解此类漏洞的危害及防范措施。 ... [详细]
  • Android商城应用开发指南(第二部分):创建启动欢迎页
    大多数商城应用程序在启动时会显示一个欢迎页面,以提升用户体验。本文将指导您如何实现一个基本的欢迎页,该页面会在用户打开应用后短暂展示,随后自动跳转至主界面。 ... [详细]
  • 本文介绍了如何计算给定数组中所有非质数元素的总和,并提供了多种编程语言的实现示例。 ... [详细]
  • 详解 | 日志系统ViseLog的基本使用与功能
    本文详细介绍了日志系统ViseLog的使用方法及其核心功能,旨在帮助开发者更好地理解和利用这一工具,提高开发效率。 ... [详细]
  • Java Servlet中获取客户端IP与MAC地址的方法
    本文介绍了一种在Java Servlet应用中获取客户端IP地址及MAC地址的技术实现方法,通过示例代码详细解析了获取过程中的关键步骤和技术点。 ... [详细]
  • 本文详细探讨了Xshell6评估版到期后无法使用的常见问题,并提供了有效的解决方案,包括如何合法购买授权以继续使用。 ... [详细]
  • 深入理解希尔排序算法
    本文详细介绍了希尔排序的原理及其相对于传统插入排序的优势,并通过实例解析了希尔排序的具体实现过程,包括代码示例及性能分析。 ... [详细]
  • 本文基于《Linux命令行与Shell脚本编程大全》第三版的第十一章内容,探讨了如何构建基本的Shell脚本,包括命令组合、脚本创建、消息显示、变量使用、输入输出重定向、管道、数学运算及脚本退出等方面的知识。 ... [详细]
  • Description“第一分钟,X说,要有矩阵,于是便有了一个里面写满了\(0\)的\(n\timesm\)矩阵。第二分钟,L说,要能修改,于是便有了将左上角为\((a,b)\) ... [详细]
  • Python | Pandas series . as _ matrix() ... [详细]
  • sqlserver动态分区方案例子
    sqlserver动态分区方案例子当我们存储的数据量比较大时,比如超过千万,上亿级别时单纯的使用索引可能效果不明显了,此时我们可以考虑采 ... [详细]
  • 尽管PHP是一种强大且灵活的Web开发语言,但开发者在使用过程中常会陷入一些典型的陷阱。本文旨在列出PHP开发中最为常见的10种错误,并提供相应的预防建议。 ... [详细]
  • 本文详细介绍了如何在Linux系统中安装和配置GitLab Runner,包括添加YUM源、安装GitLab Runner以及注册Runner的具体步骤。 ... [详细]
author-avatar
mobiledu2502904893
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有